In many of today's distributed client/server environments, client computers are frequently equipped with significant processing power and persistent storage. Yet, if a distributed file system is used, the client computers often sit idle while file servers tend to be heavily loaded. This is because conventional distributed file systems require file servers to maintain substantial control over their files. In such a file system, a client that requests access to a particular file is typically required to maintain an active communication link to constantly interact with the file server. In particular, a file handle is extended from the file server to the client. An interruption in the communication link would result in an error. In such an environment, most of the work associated with file handling rest on the file server.
To streamline file system operations, some current distributed file systems allow clients to cache files that are centrally maintained in a file server. In these file systems, when a client caches a file, a copy of the file is saved in the client's memory while the original file in the file server is locked. Locking the original file is necessary to ensure that two or more users do not attempt to modify the same file simultaneously. Although, a distributed file system that enables client file caching provides a somewhat more capable file-sharing environment, the system still requires a significant amount of communication overhead and places extensive restrictions on simultaneous file sharing by multiple users.
An effective and efficient method for sharing files among multiple users eludes those skilled in the art.